package thread;

import thread.util.MixUtils;

/**
 * <pre>
 * 模拟 支付订单 & 派送订单 对账处理，处理件数为10，100，1000
 * 查询 支付订单，查询派送订单，进行对账处理（id除10余数1则有差异），有差异则差异入库
 * POrder获取耗时20ms DOrder获取耗时100ms 除10余数1则有Diff Diff保存耗时2ms
 * 参考CheckBatch1（串行处理），使用多线程，并发组件类，异步等技术实现新版本，看各自速度如何，，，
 *
 * 我的实验数据如下
 * 机器
 * 4核16G, macOS Mojave 10.14.6, Java 1.8.0_201
 *
 * ---- 串行处理 ----
 * 10   1235ms   1253ms   1256ms
 * 100  12654ms  12682ms  12658ms
 * 1000 126688ms 126165ms 126408ms
 * ---- 多线程 ----
 * 10   1128ms   1159ms   1140ms
 * 100  10489ms  10515ms  10517ms
 * 1000 104407ms 104298ms 104455ms
 * ---- 并发组件类1 ----
 * 10   1147ms   1167ms   1145ms
 * 100  10547ms  10610ms  10622ms
 * 1000 103975ms 103744ms 103699ms
 * ---- 并发组件类2 ----
 * 10   1136ms   1212ms   1219ms
 * 100  10442ms  10507ms  10404ms
 * 1000 103511ms 103205ms 103405ms
 * ---- 异步 ---- 10线程
 * 10   288ms    303ms    361ms
 * 100  1404ms   1401ms   1420ms
 * 1000 12755ms  12743ms  12835ms
 * ---- 异步 ---- 100线程
 * 10   230ms    216ms    218ms
 * 100  364ms    332ms    324ms
 * 1000 1417ms   1415ms   1415ms
 * </pre>
 */
public class TestAll {
    public static void main(String[] args) throws Exception {
        MixUtils.IDMAX = 10;
        new CheckBatch1().process();
//        new CheckBatch2().process();
//        new CheckBatch3().process();
//        new CheckBatch4().process();
//        new CheckBatch5().process();
    }
}
